package root;

/* 
Springboard - Copyright 2011
Allan Ellegaard - Nicolas Iseli Wulffeld - Thomas Hinrichs - Nicolas Nezzo
 */
import domain.Medlem;
import java.io.*;
import java.util.ArrayList;

public class MedlemsHaandtering implements Serializable {

    //DataHandler-klassen specificeres.
    private ArrayList<Medlem> medlemsliste = new ArrayList<Medlem>();
    
    DataHandler dh;
    
    public MedlemsHaandtering() {
        dh = new DataHandler();
    }

    //Metoderne nedenfor kaldes fra GUI'en, og sendes videre til DataHandleren.
    public void opretMedlem(String cpr, String fornavn, String efternavn, String adresse, String telefon, String email) {
        Medlem m = new Medlem(cpr, fornavn, efternavn, adresse, telefon, email);
        medlemsliste.add(m);
        File.saveAll(Main.mh);
    }

    public ArrayList hentMedlemmer() {
        ArrayList a = dh.hentMedlemsliste();
        return a;
    }

    public void fjernMedlem(String cpr) {
        // Brug: Sletter det valgte medlem, ud fra hans Id nummer (cpr).
        for (int k = 0; k < this.medlemsliste.size(); k++) {
            // Listen af medlemmer køres igennem og alle med det valgte id slettes.
            Medlem m = medlemsliste.get(k);
            if (m.getCpr().equals(cpr)) {
                medlemsliste.remove(k);
                k = this.medlemsliste.size();
            }
        }
        File.saveAll(Main.mh); // Derefter gemmes den nye liste af medlemmer.
    }

    public void redigerMedlem(String cpr, String fornavn, String efternavn, String adresse, String telefon, String email) {
        for (int n = 0; n < this.medlemsliste.size(); n++) {
            // Listen af medlemmer køres igennem og den med det valgte id redigeres.
            Medlem m = medlemsliste.get(n);
            if (m.getCpr().equals(cpr)) {
                m.setFornavn(fornavn);
                m.setEfternavn(efternavn);
                m.setAdresse(adresse);
                m.setTelefon(telefon);
                m.setEmail(email);
                n = this.medlemsliste.size();
            }
        }
            
            File.saveAll(Main.mh); // Ændringerne gemmes.
    }
    
    public void hentAntalMedlemmer() {
        dh.medlemsCounter();
    }

    public String[] medlemsTitler() {
        String[] data = new String[6];

        data[0] = "Cpr";
        data[1] = "Fornavn";
        data[2] = "Efternavn";
        data[3] = "Adresse";
        data[4] = "Telefon";
        data[5] = "Email";

        return data;
    }

    public String[][] tabelMedlemmer(String searchMedlemmer) {
        // Brug: Henter og indsætter alle medlemmer i et 2d String Array. Bruges i jTable.
        ArrayList<Medlem> resultat = new ArrayList();
        ArrayList<Medlem> medlem = medlemsliste;

        for (int j = 0; j < medlem.size(); j++) { // Sammenligner på søgeord.
            Medlem m = medlem.get(j);
            if (m.getCpr().toLowerCase().contains(searchMedlemmer.toLowerCase())
                    || m.getFornavn().toLowerCase().contains(searchMedlemmer.toLowerCase())
                    || m.getEfternavn().toLowerCase().contains(searchMedlemmer.toLowerCase())
                    || m.getAdresse().toLowerCase().contains(searchMedlemmer.toLowerCase())
                    || m.getTelefon().toLowerCase().contains(searchMedlemmer.toLowerCase())
                    || m.getEmail().toLowerCase().contains(searchMedlemmer.toLowerCase())) {
                resultat.add(m);
            }
        }

        // 2d String Array oprettes og populeres med resultaterne fra søgningen.
        String[][] data = new String[resultat.size()][medlemsTitler().length];
        for (int i = 0; i < resultat.size(); i++) {
            Medlem m2 = resultat.get(i);
            data[i][0] = m2.getCpr();
            data[i][1] = m2.getFornavn();
            data[i][2] = m2.getEfternavn();
            data[i][3] = m2.getAdresse();
            data[i][4] = m2.getTelefon();
            data[i][5] = m2.getEmail();
        }

        return data;
    }
}
